package main

import (
	"encoding/json"
	"fmt"
	"log"
	"net/url"
	"strings"
)

func main() {
	//ParseQuery 解析 URL 编码的查询字符串并返回一个映射，列出为每个键指定的值。 ParseQuery 总是返回一个包含所有找到的有效查询参数的非零映射； err 描述遇到的第一个解码错误（如果有）。
	//
	//查询应该是由与号或分号分隔的键=值设置列表。 没有等号的设置被解释为设置为空值的键。

	m, err := url.ParseQuery(`x=1&y=2&y=3;z`)
	if err != nil {
		log.Fatal(err)
	}
	fmt.Println(toJSON(m))
	//{"x":["1"], "y":["2", "3"], "z":[""]}
}

func toJSON(m interface{}) string {
	js, err := json.Marshal(m)
	if err != nil {
		log.Fatal(err)
	}
	return strings.ReplaceAll(string(js), ",", ", ")
}
